package cn.tedu._04mybatis.mapper;

import cn.tedu._04mybatis.pojo.entity.Weibo;
import cn.tedu._04mybatis.pojo.vo.ResultMapVO1;
import cn.tedu._04mybatis.pojo.vo.ResultMapVO2;
import cn.tedu._04mybatis.pojo.vo.WeiboVO1;
import cn.tedu._04mybatis.pojo.vo.WeiboVO2;
import org.apache.ibatis.annotations.*;

import java.util.List;

@Mapper
public interface WeiboMapper {
    /**
     * 1.微博表中插入1条表记录
     * @param weibo 微博实体类对象
     * @return 受影响的数据条数
     */
//    @Insert("INSERT INTO weibo(content,created,user_id) VALUES (#{content},#{created},#{userId})")
    int insertWeibo(Weibo weibo);
    /**
     * 2.根据微博ID删除指定的微博
     */
//    @Delete("DELETE FROM weibo WHERE id=#{wid}")
    int deleteWeiboById(Long wid);
    /**
     * 3.根据微博ID更新指定微博的信息
     */
//    @Update("UPDATE weibo SET content=#{content},created=#{created},user_id=#{userId} WHERE id=#{id}")
    int updateWeiboById(Weibo weibo);

    /**
     * 4.查询:单挑数据全字段查询
     */
//    @Select("SELECT id,content,created,user_id AS userId FROM weibo WHERE id=#{wid}")
    Weibo selectWeiboById(Long wid);

    /**
     * 5.查询:单条数据部分字段查询
     *      查询指定微博内容content和发布时间created;
     */
//    @Select("SELECT content,created FROM weibo WHERE id=#{wid}")
    WeiboVO1 selectWeiboVOById(Long wid);


    /**
     * 6.多条数据部分字段查询
     * 查询指定用户发布的微博的ID和内容
     * 6.1创建VO
     * 6.2定义接口方法和SQL
     * 6.3测试
     */
//    @Select("SELECT id AS wid,content FROM weibo WHERE user_id=#{userId}")
    List<WeiboVO2> selectWeiboVO2ByUserId(Long userId);


    /**
     * 7.动态删除 1:数组方式
     *      根据微博ID,删除指定的微博数据
     *      DELETE FROM weibo WHERE id IN (1,3,5);
     */
    int deleteWeiboByIds1(Integer[] ids);

    /**
     * 8.动态删除 2:集合方式
     *
     */
    int deleteWeiboByIds2(List<Integer> ids);
    /**
     * 9.动态修改
     *  根据微博ID动态修改微博的相关信息
     */
    int dynamicUpdateWeiboById(Weibo weibo);

    /**
     * 10.统计微博表中的表记录的数量
     */
    int selectCount();

    /**
    11.ResultMap单表:根据微博ID查询该条微博的ID 内容content 用户ID
    */
    ResultMapVO1 selectMap1(Long id);

    /**
     * 12.ResultMap多表:查询指定用户发的所有微博信息
     */
    ResultMapVO2 selectMap2(Long id);














































}






